import axios from 'axios';

// 创建axios实例
const service = axios.create({
  // baseURL: process.env.VUE_APP_BASE_URL, //如果配置了环境变量就可以直接写/api,
  baseURL: '', //
  timeout: 1000, // 请求超时时间
});

// 请求拦截器
service.interceptors.request.use(
  config => {
    // 可以在这里添加请求头等信息
    // 比如添加token
    // const token = localStorage.getItem('token');
    // if (token) {
    //   config.headers.Authorization = `Bearer ${token}`;
    // }

    return config;
  },
  error => {
    // 请求错误处理
    console.log(error); // for debug
    Promise.reject(error);
  }
);

// 响应拦截器(暂时使用node代替)
service.interceptors.response.use(
  response => {
    // 成功的状态码进入，例如200.201等
    // 可以在这里对响应数据进行处理,返回响应数据
    switch (response.data.code) {
      case 0:
        console.log('正常请求成功');

        break;
      case 10:
        console.log('请求特殊情况');

        break;

      default:
        break;
    }
    return response.data;
  },
  error => {
    // 失败的状态码进入，例如401,404,500等
    // 响应错误处理
    if (error.response) {
      // 处理已知的错误状态码
      switch (error.response.status) {
        case 403:
          console.log('403=>', error);
          alert('错误: 访问被拒绝 (403)');
          break;
        case 404:
          console.log('404=>', error);
          alert('错误: 找不到请求的资源 (404)');
          break;
        case 500:
          console.log('500=>', error);
          alert('错误: 服务器内部错误 (500)');
          break;
        // 可以在这里添加其他状态码的处理
        default:
          console.error(`Error ${error.response.status}: ${error.response.data.message}`);
      }
    } else {
      console.log('Network Error:', error); // 网络错误处理
    }
    return Promise.reject(error);
  }
);

export default service;
